package com.phpxiu.app.supports.selector;

import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.BitmapDrawable;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.PopupWindow;

import com.phpxiu.app.kkylive.R;

import java.util.ArrayList;


/**
 * 选项选择器，可支持一二三级联动选择
 * @author Sai
 *
 */
public class OptionsPopupWindow extends PopupWindow implements OnClickListener,View.OnTouchListener {
    private View rootView; // 总的布局
    WheelOptions wheelOptions;
    private View btnSubmit, btnCancel;
    private OnOptionsSelectListener optionsSelectListener;
    private static final String TAG_SUBMIT = "submit";
    private static final String TAG_CANCEL = "cancel";

    public OptionsPopupWindow(Context context) {
        super(context);
        ScreenInfo screenInfo = new ScreenInfo((Activity) context);
        this.setWidth(LayoutParams.MATCH_PARENT);
        this.setHeight(LayoutParams.MATCH_PARENT);
        setBackgroundDrawable(new BitmapDrawable());
        //this.setBackgroundDrawable(context.getResources().getDrawable(R.drawable.xl_common_shadow_bg));// 这样设置才能点击屏幕外dismiss窗口
        //this.setOutsideTouchable(true);
        //this.setAnimationStyle(R.style.timepopwindow_anim_style);

        LayoutInflater mLayoutInflater = LayoutInflater.from(context);
        rootView = mLayoutInflater.inflate(R.layout.picker_view_options, null);
        rootView.findViewById(R.id.root).setOnTouchListener(this);
        // -----确定和取消按钮
        btnSubmit = rootView.findViewById(R.id.btnSubmit);
        btnSubmit.setTag(TAG_SUBMIT);
        //btnCancel = rootView.findViewById(R.id.btnCancel);
        //btnCancel.setTag(TAG_CANCEL);
        btnSubmit.setOnClickListener(this);
        //btnCancel.setOnClickListener(this);
        // ----转轮
        final View optionspicker = rootView.findViewById(R.id.optionspicker);
        //ScreenInfo screenInfo = new ScreenInfo((Activity) context);
        wheelOptions = new WheelOptions(optionspicker);

        wheelOptions.screenheight = screenInfo.getHeight();
        setContentView(rootView);
    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if(v.getId()== R.id.root&&event.getAction()==MotionEvent.ACTION_DOWN){
            dismiss();
        }
        return false;
    }

    public void setPicker(ArrayList<WheelItem> optionsItems) {
        wheelOptions.setPicker(optionsItems, null, null, false);
    }

    public void setPicker(ArrayList<WheelItem> options1Items,
                          ArrayList<ArrayList<WheelItem>> options2Items, boolean linkage) {
        wheelOptions.setPicker(options1Items, options2Items, null, linkage);
    }

    public void setPicker(ArrayList<WheelItem> options1Items,
                          ArrayList<ArrayList<WheelItem>> options2Items,
                          ArrayList<ArrayList<ArrayList<WheelItem>>> options3Items,
                          boolean linkage) {
        wheelOptions.setPicker(options1Items, options2Items, options3Items,
                linkage);
    }
    /**
     * 设置选中的item位置
     * @param option1
     */
    public void setSelectOptions(int option1){
        wheelOptions.setCurrentItems(option1, 0, 0);
    }
    /**
     * 设置选中的item位置
     * @param option1
     * @param option2
     */
    public void setSelectOptions(int option1, int option2){
        wheelOptions.setCurrentItems(option1, option2, 0);
    }
    /**
     * 设置选中的item位置
     * @param option1
     * @param option2
     * @param option3
     */
    public void setSelectOptions(int option1, int option2, int option3){
        wheelOptions.setCurrentItems(option1, option2, option3);
    }
    /**
     * 设置选项的单位
     * @param label1
     */
    public void setLabels(String label1){
        wheelOptions.setLabels(label1, null, null);
    }
    /**
     * 设置选项的单位
     * @param label1
     * @param label2
     */
    public void setLabels(String label1,String label2){
        wheelOptions.setLabels(label1, label2, null);
    }
    /**
     * 设置选项的单位
     * @param label1
     * @param label2
     * @param label3
     */
    public void setLabels(String label1,String label2,String label3){
        wheelOptions.setLabels(label1, label2, label3);
    }
    /**
     * 设置是否循环滚动
     * @param cyclic
     */
    public void setCyclic(boolean cyclic){
        wheelOptions.setCyclic(cyclic);
    }

    @Override
    public void onClick(View v)
    {
        String tag=(String) v.getTag();
        if(tag.equals(TAG_CANCEL)){
            dismiss();
            return;
        }else{
            if(optionsSelectListener!=null)
            {
                int[] optionsCurrentItems=wheelOptions.getCurrentItems();
                optionsSelectListener.onOptionsSelect(optionsCurrentItems[0], optionsCurrentItems[1], optionsCurrentItems[2]);
            }
            dismiss();
            return;
        }

    }

    public interface OnOptionsSelectListener {
        public void onOptionsSelect(int options1, int option2, int options3);
    }

    public void setOnoptionsSelectListener(
            OnOptionsSelectListener optionsSelectListener) {
        this.optionsSelectListener = optionsSelectListener;
    }
}
